#include "socket.h"
#include <gtest/gtest.h>
#include <arpa/inet.h>
#include <unistd.h>

TEST(SocketTest, CreateAndBindListen) {
    Socket sock("127.0.0.1", 9876);

    // 测试是否获得有效的 fd
    ASSERT_GE(sock.fd(), 0);

    // 测试设置 socket 选项
    sock.setReuseAddr(true);

    // 绑定地址
    ASSERT_NO_FATAL_FAILURE(sock.bind());

    // 开始监听
    ASSERT_NO_FATAL_FAILURE(sock.listen());

    // 检查是否监听成功(用 getsockname 检查）
    sockaddr_in addr;
    socklen_t len = sizeof(addr);
    int ret = getsockname(sock.fd(), (sockaddr*)&addr, &len);
    ASSERT_EQ(ret, 0);
    EXPECT_EQ(ntohs(addr.sin_port), 9876);
}
